what are flow graphs in compiler design